﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
namespace LGE.Other
{
    class Annimation
    {
        int nFrames; // número total de frames da animação
        int duration; //duração total da animação
        public Vector2 position;
        public bool finished = false;
        List<Texture2D> list = new List<Texture2D>();
        int frameDuration { get { return duration / nFrames; } } // duração de um frame
        int actualFrame = 0; // frame atual em que a animação está
        double durationAcc = 0; // acumulador da duração

        public Annimation(String folder, Vector2 position, int nFrames, int duration)
        {
            this.nFrames = nFrames;
            this.duration = duration;
            this.position = position;
            for (int i = 0; i < nFrames; ++i)
            {
                list.Add(Engine.Load<Texture2D>(folder + i.ToString()));
            }
        }

        public void Update(GameTime gameTime)
        {
            if (actualFrame < nFrames - 1)
            {
                durationAcc += gameTime.ElapsedGameTime.TotalMilliseconds;
                if (durationAcc > frameDuration)
                {
                    durationAcc -= frameDuration;
                    actualFrame++;
                }
            }
            else
            {
                finished = true;
                actualFrame = nFrames - 1;
            }
        }

        public void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(list[actualFrame], position, Color.White);
        }
    }
}
